The present invention relates to distributed computing systems. More particularly, the present invention relates to systems and methods for distributing processing between provider devices and client devices. Still more particularly, the present invention relates to distributed workflow-enabled systems that provide automatic discovery, that provide a pre-define interface among providers and clients, that is customizable by the user, and that allocates processing between providers and clients.
A variety of peripheral devices that each provides a specific function is common for most office environments. For example, most offices include one or more of the following office devices such as a printer, a scanner and a fax machine, a photocopier, multifunction peripheral (MFP) or some variation of these devices. Office environments have been known to include several of these devices coupled together via a network. The communication network may take a variety of different formats including but not limited to a local area network, wide-area network, a 3G network or a wireless network. However, one problem with existing configurations of these devices is that in order to use each device on the network, the user must know about the device's existence, must load different software or other drivers to communicate with each device, and has no flexibility on how to interact with the devices. Thus, users typically only interact with a small number of devices on the network and do not use many resources available on the network.
The landscape of computing devices used in conjunction with these peripheral devices has also changed from a small homogeneous set of computing devices such as desktop computers to a large heterogeneous set of computing devices with significantly varying functionality and computational power. For example, there are any number of computing devices such as but not limited to personal computers, personal digital assistants, smart phones, laptop computers and digital cameras that are coupled for use with the peripheral devices. While many of these devices have an ability to communicate over a network whether it be wired or wireless, their ability to interface with peripheral devices is significantly limited because each peripheral device requires compliance with different data communication protocols, has its own application interface and data has to be in a format specific to that peripheral and often different from the format of other peripherals.
One particular problem with current environments for using computing devices with peripheral devices is that each time a new peripheral device is added to the landscape, each existing device that wants to communicate with the new peripheral device typically must be modified or new software added to it. For example, if a new printer is added to the network, each computing device that wants to use that new printer must download and add software drivers that allow the computing device to communicate data and control commands to the new printer. Additionally, there is often no way for any new device added to the landscape to communicate its functional capabilities to other devices on the network.
Another problem even more basic than communication with new devices on the network is discovering the existence of available peripherals. For many networks, there is not a mechanism for automatically detecting devices on the network and automatically setting up the computing devices and peripheral devices for interaction. In this same way, there is also often no mechanism to automatically determine what the processing capabilities (e.g., scanning, printing, binding, etc.) of a peripheral device are.